#ifndef __BEEP
#define __BEEP

#include "config.h"

/**
 * @brief 蜂鸣器对象，继承了 Timer 定时器中断
 */
typedef struct _Beep Beep;

/**
 * @brief 获取一个蜂鸣器全局对象
 */
extern Beep *beep_new_from_global(void);

/**
 * @brief 打开蜂鸣器
 */
extern void beep_start(Beep *self);

/**
 * @brief 停止蜂鸣器
 */
extern void beep_stop(Beep *self);

/**
 * @brief 蜂鸣器瞬间响一声，极为短促
 */
extern void beep_suddenly_once(Beep *self);

/**
 * @brief 蜂鸣器短促蜂鸣一声
 */
extern void beep_short_once(Beep *self);

/**
 * @brief 蜂鸣器短促蜂鸣两声
 */
extern void beep_short_twice(Beep *self);

/**
 * @brief 蜂鸣器长蜂鸣一声
 */
extern void beep_long_once(Beep *self);

/**
 * @brief 蜂鸣器持续短促蜂鸣
 */
extern void beep_sustain_short(Beep *self);

/**
 * @brief 蜂鸣器通过蜂鸣打印字节信息，0短 1长
 */
extern void beep_binary_print(const Beep *self, unsigned char byte);

/**
 * @brief 蜂鸣器打印二进制信息，0 短 1 长
 */
extern void beep_binaries_print(Beep *self, const unsigned char *bytes);

#endif
